//入口文件
import Vue from 'vue';

//导入路由的包
import vueRouter from 'vue-router';
Vue.use(vueRouter);

//导入自己的路由模块
import router from './router.js';

//导入app组件
import app from './app.vue';

//导入mui的样式
import './lib/mui/css/mui.css';
//图标样式,先拷贝css样式，再拷贝ttf字体文件，有一点小小麻烦
import './lib/mui/css/icons-extra.css';


//按需导入mint-ui组件
import {Header,Swipe,SwipeItem,Button,Switch} from 'mint-ui';
Vue.component(Header.name,Header);
Vue.component(Swipe.name, Swipe);
Vue.component(SwipeItem.name, SwipeItem);
Vue.component(Button.name, Button);
Vue.component(Switch.name, Switch);

//导入vue-resource(数据请求)
import vueResource from 'vue-resource';
Vue.use(vueResource);

//导入格式化时间的插件
import moment from 'moment';
//定义全局的过滤器
Vue.filter('dataFormat',function(dataStr,pattern = "YYYY-MM-DD HH:mm:ss"){
    moment(dataStr).format(pattern);
});

//配置vuex
//1.导入包
import Vuex from 'vuex';
Vue.use(Vuex);

//每次进入网站的时候先从本地存储中把购物车的数据读取出来放到store中
var car = JSON.parse(localStorage.getItem('car') || '[]');
var store = new Vuex.Store({
    state:{
        //在组件中访问store中的数据只能通过this.$store.state.变量,只要挂载到vm上就是全局的。
        car:car,//将购物车的商品的数据用数组存储起来{id:商品id,count:购买数量,price:单价,selected:选中状态}
    },
    mutations:{
        addToCar(state,goodsinfo){
            //点击加入购物车，把商品信息保存到store的car上
            var flag = false;
            state.car.some(item => {
                if(item.id == goodsinfo.id){
                    item.count +=  parseInt(goodsinfo.count);
                    flag = true;
                    return true;
                }
            })

            if(!flag){
                state.car.push(goodsinfo);
            }

            //当更新car之后，把car数组存储到本地的localStorage;
            localStorage.setItem('car',JSON.stringify(state.car));
        }
    },
    getters:{
        //getters只负责对外提供数据 $store.getters.optCount
        getAllCount(state){
            var c = 0;
            state.car.forEach(item=>{
                c += item.count;
            })
            return c;
        }
    }
});

var vm = new Vue({
    el:"#app",
    render:c=>c(app),
    router,
    store
});
